package com.mcp.converter.domain.converter;

/**
 * 转换建议类
 * 提供不兼容点的转换建议
 */
public class ConversionSuggestion {
    
    /**
     * 不兼容点
     */
    private com.mcp.converter.domain.checker.IncompatiblePoint incompatiblePoint;
    
    /**
     * 建议的转换方式
     */
    private String suggestion;
    
    /**
     * 转换示例
     */
    private String example;
    
    /**
     * 是否可自动转换
     */
    private boolean autoConvertible;
    
    /**
     * 转换复杂度
     */
    private Complexity complexity;
    
    /**
     * 转换复杂度枚举
     */
    public enum Complexity {
        /**
         * 简单 - 直接替换
         */
        SIMPLE,
        
        /**
         * 中等 - 需要结构调整
         */
        MEDIUM,
        
        /**
         * 复杂 - 需要逻辑重构
         */
        COMPLEX,
        
        /**
         * 不可转换 - 需要重写
         */
        NOT_CONVERTIBLE
    }
    
    public ConversionSuggestion() {
    }
    
    public ConversionSuggestion(com.mcp.converter.domain.checker.IncompatiblePoint incompatiblePoint) {
        this.incompatiblePoint = incompatiblePoint;
    }
    
    public ConversionSuggestion(com.mcp.converter.domain.checker.IncompatiblePoint incompatiblePoint,
                               String suggestion, boolean autoConvertible) {
        this(incompatiblePoint);
        this.suggestion = suggestion;
        this.autoConvertible = autoConvertible;
    }
    
    public com.mcp.converter.domain.checker.IncompatiblePoint getIncompatiblePoint() {
        return incompatiblePoint;
    }
    
    public void setIncompatiblePoint(com.mcp.converter.domain.checker.IncompatiblePoint incompatiblePoint) {
        this.incompatiblePoint = incompatiblePoint;
    }
    
    public String getSuggestion() {
        return suggestion;
    }
    
    public void setSuggestion(String suggestion) {
        this.suggestion = suggestion;
    }
    
    public String getExample() {
        return example;
    }
    
    public void setExample(String example) {
        this.example = example;
    }
    
    public boolean isAutoConvertible() {
        return autoConvertible;
    }
    
    public void setAutoConvertible(boolean autoConvertible) {
        this.autoConvertible = autoConvertible;
    }
    
    public Complexity getComplexity() {
        return complexity;
    }
    
    public void setComplexity(Complexity complexity) {
        this.complexity = complexity;
    }
}
